package com.wicket.okrframework.web.contorller;

import com.github.pagehelper.Page;
import com.wicket.okrframework.biz.service.TypeCodeService;
import com.wicket.okrframework.biz.service.dto.req.*;
import com.wicket.okrframework.biz.service.dto.res.*;
import com.wicket.okrframework.common.ro.OkrResult;
import com.wicket.okrframework.common.util.CommonFunctionHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author ：
 * @date ：
 *
 *
 * @version 1.0
 */
@RestController
@RequestMapping("/base/typeCode/")
public class TypeCodeController {

    @Autowired
    TypeCodeService typeCodeService;

    /**
   * D1-1查询类型列表
   */
    @PostMapping("queryTypeList")
    public OkrResult<QueryTypeListRespDto> queryTypeList(@RequestBody @Validated QueryTypeListReqDto reqDTO){
    Page<?> page = CommonFunctionHelper.startPage(reqDTO.getPageNum(),reqDTO.getPageSize());

        QueryTypeListRespDto retData = typeCodeService.queryTypeList(reqDTO);

        retData.setPageNum(page.getPageNum());
        retData.setPageSize(page.getPageSize());
        retData.setTotalNum(page.getTotal());
        return OkrResult.success(retData);
    
    }

    /**
   * D1-1查询编码列表
   */
    @PostMapping("queryCodeList")
    public OkrResult<QueryCodeListRespDto> queryCodeList(@RequestBody @Validated QueryCodeListReqDto reqDTO){
    Page<?> page = CommonFunctionHelper.startPage(reqDTO.getPageNum(),reqDTO.getPageSize());

        QueryCodeListRespDto retData = typeCodeService.queryCodeList(reqDTO);

        retData.setPageNum(page.getPageNum());
        retData.setPageSize(page.getPageSize());
        retData.setTotalNum(page.getTotal());
        return OkrResult.success(retData);
    
    }

    /**
   * D1-1查询编码列表(公共)
   */
    @PostMapping("queryCodeListCom")
    public OkrResult<QueryCodeListComRespDto> queryCodeListCom(@RequestBody @Validated QueryCodeListComReqDto reqDTO){
    Page<?> page = CommonFunctionHelper.startPage(reqDTO.getPageNum(),reqDTO.getPageSize());

        QueryCodeListComRespDto retData = typeCodeService.queryCodeListCom(reqDTO);

        retData.setPageNum(page.getPageNum());
        retData.setPageSize(page.getPageSize());
        retData.setTotalNum(page.getTotal());
        return OkrResult.success(retData);
    
    }

    /**
   * D1-1查询类型详情
   */
    @PostMapping("queryTypeDetail")
    public OkrResult<QueryTypeDetailRespDto> queryTypeDetail(@RequestBody @Validated QueryTypeDetailReqDto reqDTO){
    return OkrResult.success(typeCodeService.queryTypeDetail(reqDTO));
    }

    /**
   * D1-1新增编码
   */
    @PostMapping("addCode")
    public OkrResult<AddCodeRespDto> addCode(@RequestBody @Validated AddCodeReqDto reqDTO){
    return OkrResult.success(typeCodeService.addCode(reqDTO));
    }

    /**
   * D1-1修改编码
   */
    @PostMapping("updateCode")
    public OkrResult<UpdateCodeRespDto> updateCode(@RequestBody @Validated UpdateCodeReqDto reqDTO){
    return OkrResult.success(typeCodeService.updateCode(reqDTO));
    }

    /**
   * D1-1修改类型
   */
    @PostMapping("updateType")
    public OkrResult<UpdateTypeRespDto> updateType(@RequestBody @Validated UpdateTypeReqDto reqDTO){
    return OkrResult.success(typeCodeService.updateType(reqDTO));
    }

    /**
   * D1-1新增类型
   */
    @PostMapping("addType")
    public OkrResult<AddTypeRespDto> addType(@RequestBody @Validated AddTypeReqDto reqDTO){
    return OkrResult.success(typeCodeService.addType(reqDTO));
    }

    /**
     * D1-1批量查询编码列表
     */
    @PostMapping("batchQueryCodeList")
    public OkrResult<BatchQueryCodeListRespDto> batchQueryCodeList(@RequestBody @Validated BatchQueryCodeListReqDto reqDTO) {
        return OkrResult.success(typeCodeService.batchQueryCodeList(reqDTO));
    }
/**
   * D1-1查询类型详情(公共)
   */
    @PostMapping("queryTypeDetailCom")
    public OkrResult<QueryTypeDetailComRespDto> queryTypeDetailCom(@RequestBody @Validated QueryTypeDetailComReqDto reqDTO){
    return OkrResult.success(typeCodeService.queryTypeDetailCom(reqDTO));
    }
/**
   * D1批量查询编码byCode(公共)
   */
    @PostMapping("batchQueryCodeByCodeCom")
    public OkrResult<BatchQueryCodeByCodeComRespDto> batchQueryCodeByCodeCom(@RequestBody @Validated BatchQueryCodeByCodeComReqDto reqDTO){
    return OkrResult.success(typeCodeService.batchQueryCodeByCodeCom(reqDTO));
    }
}
